
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Deploying Django &#8212; Django 2.2.12.dev20200304094918 documentation</title>
    <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
    <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../../_static/jquery.js"></script>
    <script type="text/javascript" src="../../_static/underscore.js"></script>
    <script type="text/javascript" src="../../_static/doctools.js"></script>
    <script type="text/javascript" src="../../_static/language_data.js"></script>
    <link rel="index" title="Index" href="../../genindex.html" />
    <link rel="search" title="Search" href="../../search.html" />
    <link rel="next" title="How to deploy with WSGI" href="wsgi/index.html" />
    <link rel="prev" title="Writing a custom storage system" href="../custom-file-storage.html" />



 
<script type="text/javascript" src="../../templatebuiltins.js"></script>
<script type="text/javascript">
(function($) {
    if (!django_template_builtins) {
       // templatebuiltins.js missing, do nothing.
       return;
    }
    $(document).ready(function() {
        // Hyperlink Django template tags and filters
        var base = "../../ref/templates/builtins.html";
        if (base == "#") {
            // Special case for builtins.html itself
            base = "";
        }
        // Tags are keywords, class '.k'
        $("div.highlight\\-html\\+django span.k").each(function(i, elem) {
             var tagname = $(elem).text();
             if ($.inArray(tagname, django_template_builtins.ttags) != -1) {
                 var fragment = tagname.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>");
             }
        });
        // Filters are functions, class '.nf'
        $("div.highlight\\-html\\+django span.nf").each(function(i, elem) {
             var filtername = $(elem).text();
             if ($.inArray(filtername, django_template_builtins.tfilters) != -1) {
                 var fragment = filtername.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>");
             }
        });
    });
})(jQuery);</script>

  </head><body>

    <div class="document">
  <div id="custom-doc" class="yui-t6">
    <div id="hd">
      <h1><a href="../../index.html">Django 2.2.12.dev20200304094918 documentation</a></h1>
      <div id="global-nav">
        <a title="Home page" href="../../index.html">Home</a>  |
        <a title="Table of contents" href="../../contents.html">Table of contents</a>  |
        <a title="Global index" href="../../genindex.html">Index</a>  |
        <a title="Module index" href="../../py-modindex.html">Modules</a>
      </div>
      <div class="nav">
    &laquo; <a href="../custom-file-storage.html" title="Writing a custom storage system">previous</a>
     |
    <a href="../index.html" title="“How-to” guides" accesskey="U">up</a>
   |
    <a href="wsgi/index.html" title="How to deploy with WSGI">next</a> &raquo;</div>
    </div>

    <div id="bd">
      <div id="yui-main">
        <div class="yui-b">
          <div class="yui-g" id="howto-deployment-index">
            
  <div class="section" id="s-deploying-django">
<span id="deploying-django"></span><h1>Deploying Django<a class="headerlink" href="#deploying-django" title="Permalink to this headline">¶</a></h1>
<p>Django’s chock-full of shortcuts to make Web developer’s lives easier, but all
those tools are of no use if you can’t easily deploy your sites. Since Django’s
inception, ease of deployment has been a major goal.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="wsgi/index.html">How to deploy with WSGI</a><ul>
<li class="toctree-l2"><a class="reference internal" href="wsgi/gunicorn.html">How to use Django with Gunicorn</a></li>
<li class="toctree-l2"><a class="reference internal" href="wsgi/uwsgi.html">How to use Django with uWSGI</a></li>
<li class="toctree-l2"><a class="reference internal" href="wsgi/modwsgi.html">How to use Django with Apache and <code class="docutils literal notranslate"><span class="pre">mod_wsgi</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="wsgi/apache-auth.html">Authenticating against Django’s user database from Apache</a></li>
<li class="toctree-l2"><a class="reference internal" href="wsgi/index.html#the-application-object">The <code class="docutils literal notranslate"><span class="pre">application</span></code> object</a></li>
<li class="toctree-l2"><a class="reference internal" href="wsgi/index.html#configuring-the-settings-module">Configuring the settings module</a></li>
<li class="toctree-l2"><a class="reference internal" href="wsgi/index.html#applying-wsgi-middleware">Applying WSGI middleware</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../static-files/deployment.html">Deploying static files</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../static-files/deployment.html#serving-static-files-in-production">Serving static files in production</a></li>
<li class="toctree-l2"><a class="reference internal" href="../static-files/deployment.html#learn-more">Learn more</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../error-reporting.html">Error reporting</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../error-reporting.html#email-reports">Email reports</a></li>
<li class="toctree-l2"><a class="reference internal" href="../error-reporting.html#filtering-error-reports">Filtering error reports</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="checklist.html">Deployment checklist</a><ul>
<li class="toctree-l2"><a class="reference internal" href="checklist.html#run-manage-py-check-deploy">Run <code class="docutils literal notranslate"><span class="pre">manage.py</span> <span class="pre">check</span> <span class="pre">--deploy</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="checklist.html#critical-settings">Critical settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="checklist.html#environment-specific-settings">Environment-specific settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="checklist.html#https">HTTPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="checklist.html#performance-optimizations">Performance optimizations</a></li>
<li class="toctree-l2"><a class="reference internal" href="checklist.html#error-reporting">Error reporting</a></li>
</ul>
</li>
</ul>
</div>
<p>If you’re new to deploying Django and/or Python, we’d recommend you try
<a class="reference internal" href="wsgi/modwsgi.html"><span class="doc">mod_wsgi</span></a> first. In most cases it’ll be
the easiest, fastest, and most stable deployment choice.</p>
</div>


          </div>
        </div>
      </div>
      
        
          <div class="yui-b" id="sidebar">
            
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h4>Previous topic</h4>
  <p class="topless"><a href="../custom-file-storage.html"
                        title="previous chapter">Writing a custom storage system</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="wsgi/index.html"
                        title="next chapter">How to deploy with WSGI</a></p>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../../_sources/howto/deployment/index.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
              <h3>Last update:</h3>
              <p class="topless">Mar 04, 2020</p>
          </div>
        
      
    </div>

    <div id="ft">
      <div class="nav">
    &laquo; <a href="../custom-file-storage.html" title="Writing a custom storage system">previous</a>
     |
    <a href="../index.html" title="“How-to” guides" accesskey="U">up</a>
   |
    <a href="wsgi/index.html" title="How to deploy with WSGI">next</a> &raquo;</div>
    </div>
  </div>

      <div class="clearer"></div>
    </div>
  </body>
</html>